﻿using System;
using System.Collections.Generic;
using System.Text;
using BussinessLogicTecnoPez;
using BussinessLogicTecnoPez.Tipos_Comunes;
using BussinessLogicTecnoPez.Produccion.Enfermedades_y_control_de_estanques;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;

namespace BussinessLogicTecnoPez.Produccion.Compras
{
    [Serializable]
    [DBTable("GASTOSGENERALES")]
    public class Gasto : EntityBase<Gasto>
    {
        private int idGasto;
        private string descripcion;
        private decimal monto;
        private TipoMoneda objMoneda;
        private DateTime fecha;
        private Empleado objEmpleado;

        [FriendlyName("Código", false)]
        [DBField("IDGASTOGENERAL", true, true)]
        public int IdGasto
        {
            get { return idGasto; }
            set { idGasto = value; }
        }

        [NotNullValidator(MessageTemplate = "Descripción: Debe tener algun valor.")]
        [StringLengthValidator(0, 50, MessageTemplate = "Descripción: Tamaño máximo es de 50 carateres.")]
        [TecnoPezNoEmptyStringValidator("Descripción: Debe tener algun valor.")]
        [FriendlyName("Descripción", true)]
        [DBField("DESCRIPCION", false, false)]
        public string Descripcion
        {
            get { return descripcion; }
            set { descripcion = value; }
        }

        [NotNullValidator(MessageTemplate = "Moneda: Debe tener algun valor.")]
        [FriendlyName("Moneda", true)]
        [DBField("IDTIPOMONEDA", false, false,true,"IDTIPOMONEDA")]
        public TipoMoneda TipoMoneda
        {
            get { return objMoneda; }
            set { objMoneda = value; }
        }

        [NotNullValidator(MessageTemplate = "Monto: Debe tener algun valor mayor a cero.")]
        [FriendlyName("Monto", true)]
        [DBField("MONTO", false, false)]
        public decimal Monto
        {
            get { return monto; }
            set { monto = value; }
        }

        [FriendlyName("Fecha", false)]
        [DBField("FECHA", false, false)]
        public DateTime Fecha
        {
            get { return fecha; }
            set { fecha = value; }
        }

        [FriendlyName("Fecha", true)]
        public string FechaString
        {
            get { return this.Fecha.ToShortDateString(); }
        }

        [FriendlyName("Empleado", true)]
        [DBField("IDEMPLEADO", false, false, true, "IDEMPLEADO")]
        public Empleado Empleado
        {
            get { return objEmpleado; }
            set { objEmpleado = value; }
        }

        public override string ToString()
        {
            return this.Descripcion;
        }
    }
}
